package leetcode_周赛._2021._202103._20210328;

import java.util.HashSet;

/**
 * @author yzh
 * @data 2021/3/28 10:32
 * 思路：
 *   使用 map 存储数字
 *   遍历字符串，如果不是字母，则加上；是则存储
 *   主要是 0，001 和 01 相同，但把 0 去掉，只有一个 0 也算
 *   所以先设置一个 flag，表示有 0 出现，如果 tem 长度等于 0 并且 flag 为 true时，表示是 0
 */
public class _5713 {
    public static void main(String[] args) {
        System.out.println(new _5713().numDifferentIntegers("gi851a851q8510v"));
    }

    public int numDifferentIntegers(String word) {
        StringBuilder tem = new StringBuilder();
        HashSet<String> set = new HashSet<>();
        char[] chars = word.toCharArray();
        boolean flag = false;
        for (char c : chars) {
            if (Character.isDigit(c)) {
                if (tem.length() == 0 && c == '0') flag = true;
                else tem.append(c);
            } else {
                if (tem.length() == 0 && flag) set.add("0");
                if (tem.length() > 0) {
                    set.add(tem.toString());
                    tem.delete(0, tem.length());
                }
                flag = false;
            }
        }
        if (tem.length() == 0 && flag) set.add("0");
        if (tem.length() > 0) {
            set.add(tem.toString());
            tem.delete(0, tem.length());
        }
        return set.size();
    }
}
